<?php
namespace Admin\Controller;
use Common\Controller\AdminBaseController;
/**
 * 后台权限管理
 */

class RuleController extends AdminBaseController
{
//	权限管理
	public function index(){
		$data = D('AuthRule')->getTreeData('tree','id','title');
		$assign=array(
            'data'=>$data
            );
        $this->assign($assign);
	    $this->display();
	}
	
//	添加权限
	public function add(){
	    $data=I('post.');
        unset($data['id']);
        if(D('AuthRule')->addData($data)){
        	$this->success('添加成功',U('Admin/Rule/index'));
        }else{
        	$this->error('添加失败',U('Admin/Rule/index'));
        }
        
        
	}
	
//	修改权限
	public function edit(){
	    $data=I('post.');
        if(D('AuthRule')->editData($data)){
        	$this->success('修改成功',U('Admin/Rule/index'));
        }else{
        	$this->error('修改失败',U('Admin/Rule/index'));
        }
	}
	
//	删除权限
	public function delete(){
	    $id=I('get.id');
        $map=array(
            'id'=>$id
            );
        if(D('AuthRule')->deleteData($map)){
            $this->success('删除成功',U('Admin/Rule/index'));
        }else{
            $this->error('请先删除子权限');
        }
	}
	
	
//*******************用户组**********************
	/**
     * 用户组列表
     */
    public function group(){
        $data=D('AuthGroup')->select();
        $assign=array(
            'data'=>$data
            );
        $this->assign($assign);
        $this->display();
    }
    
	/**
     * 添加用户组
     */
    public function add_group(){
        $data=I('post.');
        unset($data['id']);
        D('AuthGroup')->addData($data);
        $this->success('添加成功',U('Admin/Rule/group'));
    }

    /**
     * 修改用户组
     */
    public function edit_group(){
        $data=I('post.');
        D('AuthGroup')->editData($data);
        $this->success('修改成功',U('Admin/Rule/group'));
    }

    /**
     * 删除用户组
     */
    public function delete_group(){
        $id=I('get.id');
        $map=array(
            'id'=>$id
            );
        D('AuthGroup')->deleteData($map);
        $this->success('删除成功',U('Admin/Rule/group'));
    }
    
    /**
     * 添加用户到用户组
     */
    
    public function add_user_to_group(){
		$data = I('get.');
		$map = array(
			'uid'=>$data['uid'],
			'group_id'=>$data['group_id']
		);
		$count = M('AuthGroupAccess')->where($map)->count();
		if($count==0){
            D('AuthGroupAccess')->addData($data);
        }
		$this->success('操作成功',U('Admin/Rule/check_user',array('group_id'=>$data['group_id'],'username'=>$data['username'])));
		
		
    }

//*****************权限-用户组*****************
	/**
     * 分配权限
     */
    public function rule_group(){
        if(IS_POST){
            $data=I('post.');
            $data['rules']=implode(',', $data['rule_ids']);
            D('AuthGroup')->editData($data);
            $this->success('操作成功',U('Admin/Rule/group'));
        }else{
            $id=I('get.id');
            // 获取用户组数据
            $group_data=M('Auth_group')->where(array('id'=>$id))->find();
            $group_data['rules']=explode(',', $group_data['rules']);
            // 获取规则数据
            $rule_data=D('AuthRule')->getTreeData('level','id','title');
            $assign=array(
                'group_data'=>$group_data,
                'rule_data'=>$rule_data
                );
            $this->assign($assign);
            $this->display();
        }

    }  
    
    
//******************用户-用户组*******************
	/**
     * 添加成员
     */
    public function check_user(){
        $username=I('get.username','');
        $group_id=I('get.group_id');
        $group_name=M('Auth_group')->getFieldById($group_id,'title');
        $uids=D('AuthGroupAccess')->getUidsByGroupId($group_id);
        // 判断用户名是否为空
        if(empty($username)){
            $user_data='';
        }else{
            $user_data=M('Users')->where(array('username'=>$username))->select();
        }
        $assign=array(
            'group_name'=>$group_name,
            'uids'=>$uids,
            'user_data'=>$user_data,
            );
        $this->assign($assign);
        $this->display();
    }  
    
	
//	管理员列表
	public function admin_user_list(){
		$data = D('AuthGroupAccess')->getAllData();
		$assign=array(
            'data'=>$data
            );
        $this->assign($assign);
	    $this->display();
	}
	
//	添加管理员
	public function add_admin(){
		if(IS_POST){
			$data = I('post.');
			if(!D('Users')->addData($data)) $this->error(D('Users')->getError());
			// 操作成功
            $this->success('添加成功',U('Admin/Rule/admin_user_list'));
		}else{
			$data = D('AuthGroup')->select();
			$assign=array(
                'data'=>$data
                );
            $this->assign($assign);
			$this->display();
		}
	    
	}
	
	/**
     * 修改管理员
     */
	public function edit_admin(){
		if(IS_POST){
			$data = I('post.');
			if(!D('Users')->editData($data)) $this->error(D('Users')->getError());
			// 操作成功
            $this->success('修改成功',U('Admin/Rule/admin_user_list'));
		}else{
//			获取原数据
			$id = I('get.id',0,'intval');
//			用户数据
			$user_data = M('Users')->find($id);
//			获取已经加入的用户组
			/**
			 * 这个是getField方法最基本的用法，用于获取符合条件的某个字段值。
			 * 如果希望返回符合要求的字段列（多个结果），可以使用：(字段,true)
			 */
			$group_data = M('AuthGroupAccess')
							->where(array('uid'=>$id))
							->getField('group_id',true);
//			全部用户组
			$data=D('AuthGroup')->select();
            $assign=array(
                'data'=>$data,
                'user_data'=>$user_data,
                'group_data'=>$group_data
                );
            $this->assign($assign);
			$this->display();
		}
	    
	}
	
	
	
	
	
	
}